package com.augurit.common.base.service;

import java.io.Serializable;
import java.util.List;

import org.springside.modules.orm.Page;
import org.springside.modules.orm.PropertyFilter;

/**
 * CRUD 的接口类，提供 CRUD 的基础接口方法
 */
public interface ICrudService<T, PK extends Serializable> extends IBaseService<T, PK>{
	
	/**
	 * 根据分页对象和过滤条件列表进行分页条件查询
	 * @param page 分页对象
	 * @param filters 过滤条件列表
	 * @return 分页查询结果.附带结果列表及所有查询时的参数
	 */
	public Page<T> search(final Page<T> page, final List<PropertyFilter> filters);
	
	/**
	 * 根据分页对象和业务Form类进行分页条件查询
	 * @param page 分页对象
	 * @param form Form对象
	 * @return 分页查询结果.附带结果列表及所有查询时的参数
	 */
	public Page<T> search(final Page<T> page, final T form);

}
